spmjs

spm@3.x

Brand new static package manager for browser.

Getting Started 󰅴 Packages

once @1.3.3


Run a function exactly one time

spm install once@1.3.3

Version: 1.3.3 ~ stable

Updated 10 years ago
Homepage https://github.com/isaacs/once#readme
Repository git://github.com/isaacs/once.git
Dependencies wrappy@1
Main once.js
Tarfile once-1.3.3.tar.gz

once

Only call a function once.

usage

var once = require('once')

function load (file, cb) {
  cb = once(cb)
  loader.load('file')
  loader.once('load', cb)
  loader.once('error', cb)
}

Or add to the Function.prototype in a responsible way:

// only has to be done once
require('once').proto()

function load (file, cb) {
  cb = cb.once()
  loader.load('file')
  loader.once('load', cb)
  loader.once('error', cb)
}

Ironically, the prototype feature makes this module twice as complicated as necessary.

To check whether you function has been called, use fn.called. Once the function is called for the first time the return value of the original function is saved in fn.value and subsequent calls will continue to return this value.

var once = require('once')

function load (cb) {
  cb = once(cb)
  var stream = createStream()
  stream.once('data', cb)
  stream.once('end', function () {
    if (!cb.called) cb(new Error('not found'))
  })
}